/*
 * @Author: 0x9DEFA478
 * @Date: 2022-01-21 19:58:34
 * @LastEditTime: 2022-04-02 17:07:31
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#ifndef __IP_SAI_H_
#define __IP_SAI_H_
#include "sai.h"
#include "IP_DMA.h"


//获取dma实例
#define cIP_SAI_DMA(ip_sai_block) ((ip_sai_block)->Instance.DMA->Instance.Instance)

//获取spi实例
#define cIP_SAI_SAI(ip_sai_block)   ((ip_sai_block)->Instance.Instance)


typedef struct{
  struct{
    SAI_Block_TypeDef* Instance;
    IP_DMA* DMA;
  }Instance;

  unsigned int MCLKDIV;

  union{
    struct{

      void* (*ReadDataCallback)(void*,int);//读取音频数据回调 (此段在DMA传输完成时被调用)
      void* v_ReadDataCallback;//回调传入参数
    }Master;

    struct{
      void* _keep;//暂未实现
    }Slave;
  }Mode;

}IP_SAI_Block;




/**
 * @brief 初始化 IP_I2S 仅发送模式
 * @param ip_sai 空的IP_SAI_Block对象(已分配内存的)
 * @param DMA 初始化好的dma对象
 * @param _sai sai句柄
 * @return 无
 */
void IP_SAI_MasterTx_Init(IP_SAI_Block* ip_sai,IP_DMA* DMA,SAI_Block_TypeDef* _sai);

/**
 * @brief 开始SAI传输
 * @param ip_sai IP_SAI_Block句柄
 * @param SizeOfDataPack 每个数据包大小(单位:字节) 必须为4的倍数
 * @param Callback 获取数据的方法
 * @param Callback_v GetData_Callback传入的参数
 * @return 无
 */
void IP_SAI_MasterTx_Start(IP_SAI_Block* ip_sai,int SizeOfDataPack,void* (*Callback)(void*,int),void* Callback_v);

/**
 * @brief 停止SAI传输
 * @param ip_sai IP_SAI_Block句柄
 * @return 无
 */
void IP_SAI_MasterTx_Stop(IP_SAI_Block* ip_sai);

/**
 * @brief 设置SAI MCLK分频 在SAI停止的情况下使用
 * @param ip_sai IP_SAI_Block句柄
 * @param MCLKDIV 分频系数
 * @return 无
 */
void IP_SAI_MasterTx_SetMCLKDIV(IP_SAI_Block* ip_sai,unsigned int MCLKDIV);




#endif //__IP_SAI_H_
